package entretenimiento.negocio;


import java.util.Collection;
import java.util.Date;

import entretenimiento.dao.OfertasDAO;
import entretenimiento.excepcion.DAOExcepcion;
import entretenimiento.modelo.Ofertas;

public class GestionOfertas {

	public Ofertas insertar(String NoOferta, String FeInicio, String FeCaducidad, String TxtDescripcion, int CoUbicacion, int FlEstado)
			throws DAOExcepcion {
		OfertasDAO dao = new OfertasDAO();

		Ofertas ofer = new Ofertas();
		
		//VALIDACION
		ValidarDatosIngresados(NoOferta,FeInicio,FeCaducidad,TxtDescripcion,CoUbicacion, FlEstado);
		VerificarSiExisteNombreOferta(NoOferta);		
		//validarSiEsCorreo(correo); */
					
		//Datos para Insertar
		ofer.setNoOferta(NoOferta);
		ofer.setFeInicio(FeInicio);
		ofer.setFeCaducidad(FeCaducidad);
		ofer.setTxtDescripcion(TxtDescripcion);
		ofer.setCoUbicacion(CoUbicacion);
		ofer.setFlEstado(FlEstado);		
		return dao.insertar(ofer);
	}
	
	public  boolean DatoEsValido(String strDato) {
        return strDato != null && !strDato.isEmpty();
    }
	
    
    public boolean validarnum(int num) {  
        return (num !=1 && num!=2 );  
    }
     
    public boolean validadel(int del) {  
        return ( del != 0 );  
    }
    
    public void ValidarDatosIngresados(String NoOferta, String FeInicio, String FeCaducidad,String TxtDescripcion,int CoUbicacion, int FlEstado)
			throws DAOExcepcion {
				
		String strMensaje = "";
		if (!DatoEsValido(NoOferta)){
		    strMensaje = "Error, Debe Ingresar Nombre de Oferta.";
		}		
		if (!DatoEsValido(FeInicio)){
		    strMensaje += "Error, Debe Ingresar Fecha de Inicio de Oferta .";
		}
		if (!DatoEsValido(FeCaducidad)){
		    strMensaje += "Error, Debe Ingresar Final de la Oferta.";
		}
		if (!DatoEsValido(TxtDescripcion)){
		    strMensaje += "Error, especificique la descricpcion de la oferta";
		}
		if (validarnum(CoUbicacion)){
		    strMensaje += "Error, Solo debe ingresar CODIGO DE UBICACION: 1.-Superior, 2.-Lateral";
		}
		if (validadel(FlEstado)){
		    strMensaje += "Error, Debe Ingresar FlEstado como Activo";
		}
		if (!strMensaje.isEmpty())
		    throw new DAOExcepcion(strMensaje);
		}

	
	public Ofertas actualizar(int CoOferta,String NoOferta,String FeInicio,String FeCaducidad,String TxtDescripcion,int CoUbicacion, int FlEstado)
			throws DAOExcepcion {
		
		OfertasDAO dao = new OfertasDAO();
		ValidarDatosIngresados(NoOferta,FeInicio,FeCaducidad,TxtDescripcion,CoUbicacion, FlEstado);
		VerificarSiExisteNombreOferta(NoOferta);
		
		Ofertas ofer = new Ofertas();
		
		ofer.setCoOferta(CoOferta);
		ofer.setNoOferta(NoOferta);
		ofer.setFeInicio(FeInicio);
		ofer.setFeCaducidad(FeCaducidad);
		ofer.setTxtDescripcion(TxtDescripcion);
		ofer.setCoUbicacion(CoUbicacion);
		ofer.setFlEstado(FlEstado);

		return dao.actualizar(ofer);
	}
	
	public Collection<Ofertas> buscarPorNombre(String CoOferta)
			throws DAOExcepcion {
		OfertasDAO dao = new OfertasDAO();
		return dao.listar();
	}
	
	public Collection<Ofertas> listar() throws DAOExcepcion {
		OfertasDAO dao = new OfertasDAO();
		return dao.listar();
	}
	
	
	public int VerificarExistencia(int CoOferta, String NoOferta ) throws DAOExcepcion {
		OfertasDAO dao = new OfertasDAO();
		return dao.VerificarExistencia(CoOferta, NoOferta);
	}
	
	public void VerificarSiExisteNombreOferta(String  NoOferta)
			throws DAOExcepcion {
		
		String strMensaje = "";
		OfertasDAO dao = new OfertasDAO();
		Ofertas ofer = new Ofertas();
		ofer = dao.obtener(NoOferta);
		if (ofer.getNoOferta() != null)	{
			strMensaje += "Nombre de Oferta Ya Existe";
			//throw new DAOExcepcion("Nombre de Oferta Ya Existe");
			throw new DAOExcepcion(strMensaje);
			
		}		
	}
	
	public Ofertas obtener(String NoOferta) throws DAOExcepcion {
		OfertasDAO dao = new OfertasDAO();
		return dao.obtener(NoOferta);
	}
	
	
	
	public Ofertas obtenerReg(int CoOferta) throws DAOExcepcion {
		OfertasDAO dao = new OfertasDAO();
		return dao.obtenerReg(CoOferta);
	}


	public void eliminar(int CoOferta) throws DAOExcepcion {
		OfertasDAO dao = new OfertasDAO();
		dao.eliminar(CoOferta);
	}
	
	public Collection<Ofertas> listarOfertasByFecha(Date feinicio, Date fecaducidad)
			throws DAOExcepcion {
		OfertasDAO dao = new OfertasDAO();
		return dao.listarByFechas(feinicio, fecaducidad);
	}
	
	                                                         
}
	
	
	